import os
from celery import Celery

# 设置Django的默认设置模块，让Celery知道Django项目
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'baojing.settings')

app = Celery('baojing')

# 使用字符串设置，这样工作进程不需要序列化配置对象
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现所有已注册的Django应用中的任务
app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

# 导入统一的Celery修复模块，解决PicklingError和unpack错误
try:
    import sys
    import os
    # 确保能找到修复模块
    sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    import celery_unified_fix
    # 修复会在模块导入时自动应用
    import logging
    logger = logging.getLogger('celery')
    logger.info("✅ 已导入统一的Celery修复模块")
except Exception as e:
    # 如果导入失败，记录错误但继续运行
    import logging
    logger = logging.getLogger('celery')
    logger.error(f"导入统一的Celery修复模块时出错: {str(e)}")
